package com.yc.javaee.servlet.d0615;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 1. 请求属性只会再请求的过程中有效( 1秒 ), 每次请求都会生成新的请求对象, 因此数据不会共享
 * 2. 会话属性 , 会在会话的有效期之内有效( 30分钟)
 *          1. 时序性   2. 时效性
 *       有效期:  1. 连续的2次请求时间间隔不超过30分钟  自动失效
 *               2. 关闭浏览器, 会话即失效  => 会话机制默认使用cookie来保存 会话id  丢失会话
 *                  JSESSIONID  => Java   SESSION   ID
 *                  会话ID 与 会话对象是 一对一
 *                  会话默认使用 cookie 来保存 会话id
 *               3. 会话可以手动失效
 * 3. 应用上下文对象: 全局唯一, 永不失效, 除非关闭服务器
 */

@WebServlet(name = "GetSessionServlet", value = "/getSession.s")
public class GetSessionServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        HttpSession session = request.getSession();
        ServletContext application = this.getServletContext();
        PrintWriter out = response.getWriter();
        // setContentType 不能再获取流之后再设置
        // response.setContentType("text/html;charset=utf-8");
        out.append("请求属性: language = " + request.getAttribute("language")).append("<br>");
        out.append("会话属性: animal = " + session.getAttribute("animal")).append("<br>");
        out.append("应用属性: computer = " + application.getAttribute("computer")).append("<br>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
